<?php
// +----------------------------------------------------------------------
// | RXThinkCMF_TP3.2混编版框架 [ RXThinkCMF ]
// +----------------------------------------------------------------------
// | 版权所有 2022 南京RXThinkCMF研发中心
// +----------------------------------------------------------------------
// | 官方网站: http://www.rxthink.cn
// +----------------------------------------------------------------------
// | 作者: 牧羊人 <rxthinkcmf@163.com>
// +----------------------------------------------------------------------
// | 免责声明:
// | 本软件框架禁止任何单位和个人用于任何违法、侵害他人合法利益等恶意的行为，禁止用于任何违
// | 反我国法律法规的一切平台研发，任何单位和个人使用本软件框架用于产品研发而产生的任何意外
// | 、疏忽、合约毁坏、诽谤、版权或知识产权侵犯及其造成的损失 (包括但不限于直接、间接、附带
// | 或衍生的损失等)，本团队不承担任何法律责任。本软件框架只能用于公司和个人内部的法律所允
// | 许的合法合规的软件产品研发，详细声明内容请阅读《框架免责声明》附件；
// +----------------------------------------------------------------------

namespace Admin\Controller;

use Admin\Model\UserModel;
use Admin\Service\UserPermissionService;

/**
 * 后台主页-控制器
 * @author 牧羊人
 * @since 2021/1/17
 * Class IndexController
 * @package Admin\Controller
 */
class IndexController extends BaseController
{
    /**
     * 初始化
     * @author 牧羊人
     * @since 2021/1/17
     */
    protected function _initialize()
    {
        parent::_initialize(); // TODO: Change the autogenerated stub
    }

    /**
     * 主页
     * @author 牧羊人
     * @since 2021/1/17
     */
    public function index()
    {
        // 获取权限菜单
        $userPermissionService = new UserPermissionService();
        $menuList = $userPermissionService->getPermissionMenuList($this->userId);
        $this->assign("menuList", $menuList);
        $this->display();
    }

    /**
     * 欢迎页
     * @author 牧羊人
     * @since 2021/1/17
     */
    public function main()
    {
        $this->display();
    }

    /**
     * 个人中心
     * @return array|void
     * @since 2022/2/17
     * @author 牧羊人
     */
    public function userInfo()
    {
        if (IS_POST) {
            // 参数
            $param = I('post.', '', 'trim');
            // 真实姓名
            $realname = trim($param['realname']);
            // 邮箱
            $email = trim($param['email']);
            // 个人简介
            $intro = trim($param['intro']);
            // 街道地址
            $address = trim($param['address']);
            // 联系电话
            $mobile = trim($param['mobile']);
            $data = [
                'id' => $this->userId,
                'realname' => $realname,
                'email' => $email,
                'intro' => $intro,
                'address' => $address,
                'mobile' => $mobile,
            ];
            $userModel = new UserModel();
            $result = $userModel->edit($data);
            if (!$result) {
                $this->ajaxReturn(message("信息保存失败", false));
                return;
            }
            $this->ajaxReturn(message());
            return;
        }
        // 获取用户信息
        $userModel = new UserModel();
        $userInfo = $userModel->getInfo($this->userId);
        $this->assign("userInfo", $userInfo);
        return $this->render();
    }

    /**
     * 修改密码
     * @return array|void
     * @since 2022/2/17
     * @author 牧羊人
     */
    public function updatePwd()
    {
        if (IS_POST) {
            // 参数
            $param = I('post.', '', 'trim');
            // 原密码
            $oldPassword = trim($param['oldPassword']);
            if (!$oldPassword) {
                return message("原密码不能为空", false);
            }
            // 新密码
            $newPassword = trim($param['newPassword']);
            if (!$newPassword) {
                return message("新密码不能为空", false);
            }
            // 确认密码
            $rePassword = trim($param['rePassword']);
            if (!$rePassword) {
                return message("确认密码不能为空", false);
            }
            if ($newPassword != $rePassword) {
                return message("两次输入的密码不一致", false);
            }
            if (get_password($oldPassword . $this->userInfo['username']) != $this->userInfo['password']) {
                return message("原始密码不正确", false);
            }
            // 设置新密码
            $data = [
                'id' => $this->userId,
                'password' => get_password($newPassword . $this->userInfo['username']),
            ];
            $userModel = new UserModel();
            $result = $userModel->edit($data);
            if (!$result) {
                $this->ajaxReturn(message("修改失败", false));
                return;
            }
            $this->ajaxReturn(message("修改密码成功"));
        }
    }

}